package com.objection;

import java.util.Scanner;


public class Constractor {
    // 静态初始化块必须定义在类的最开始，用于初始化类的静态字段
//    static
//    {
//        int age = 18;
//    }

    public static void main(String[] args) {
        Scanner putInHolder = new Scanner(System.in);
        System.out.println("请输入初始值");
        int num = putInHolder.nextInt();
        Constractor a = new Constractor(num);
        System.out.println(a.num);
    }
    /*
    java中的构造函数可以有多重不同的函数重载，不同的重载之间必须存在以下区别：
    1. 参数的数量 类型 至少一种不同才能成为合法的函数重载
    2. 变量名不同不能作为一种合法的函数重载
    3. 返回值类型不是标志函数重载的充分条件，具有相同参数数量和类型的不同返回值的函数不是合法的函数重载
    4. 构造器中可以访问类中的方法和字段
    */

    // 字段初始化
    public static final int age = 18;
    private int num = 0; // 直接赋值初始化
    public Constractor(int num) {
        this.num = this.getNum(num);
    }

    /**
     * @param num: The initial number
     * @return :The final result
     * */
    private int getNum(int num) {
        return num * 10;
    }

}
